#ifndef TRANSCODEPROGRESSDIALOG_H
#define TRANSCODEPROGRESSDIALOG_H

#include <QDialog>
#include <QProgressBar>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QTime>
#include <QTimer>

/**
 * @brief 转码进度对话框
 * 
 * 显示视频转码进度，提供取消功能
 * 界面设计符合IMX6ULL触摸屏操作
 */
class TranscodeProgressDialog : public QDialog
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数
     * @param fileName 正在转码的文件名
     * @param parent 父控件
     */
    explicit TranscodeProgressDialog(const QString &fileName, QWidget *parent = nullptr);
    
    /**
     * @brief 析构函数
     */
    ~TranscodeProgressDialog();

    /**
     * @brief 更新进度
     * @param progress 进度(0-100)
     */
    void updateProgress(int progress);

    /**
     * @brief 设置状态文本
     * @param text 状态文本
     */
    void setStatusText(const QString &text);

    /**
     * @brief 设置转码开始时间（用于计算剩余时间）
     */
    void startTimer();

signals:
    /**
     * @brief 取消转码信号
     */
    void cancelRequested();

private slots:
    /**
     * @brief 取消按钮点击
     */
    void onCancelClicked();

    /**
     * @brief 更新剩余时间显示
     */
    void onUpdateTimeEstimate();

private:
    /**
     * @brief 初始化UI
     * @param fileName 文件名
     */
    void setupUI(const QString &fileName);

    /**
     * @brief 计算剩余时间
     * @param progress 当前进度(0-100)
     * @return 剩余时间字符串
     */
    QString calculateRemainingTime(int progress);

    /**
     * @brief 格式化时间显示
     * @param seconds 秒数
     * @return 格式化的时间字符串
     */
    QString formatTime(int seconds);

    // UI组件
    QLabel *m_titleLabel;           // 标题标签
    QLabel *m_fileLabel;            // 文件名标签
    QLabel *m_statusLabel;          // 状态标签
    QProgressBar *m_progressBar;    // 进度条
    QLabel *m_progressLabel;        // 进度百分比标签
    QLabel *m_timeLabel;            // 剩余时间标签
    QPushButton *m_cancelButton;    // 取消按钮

    // 时间计算
    QTime m_startTime;              // 开始时间
    QTimer *m_updateTimer;          // 更新定时器
    int m_currentProgress;          // 当前进度
    bool m_timerStarted;            // 计时器是否已启动
};

#endif // TRANSCODEPROGRESSDIALOG_H

